#ifndef MODEL_H_
#define MODEL_H_

#include <QAbstractItemModel>
#include <QModelIndex>
#include <QVariant>

class TreeItem;

class TreeModel : public QAbstractItemModel
{
     Q_OBJECT

public:
  TreeModel(QObject *parent = 0); //const QString &data,
  ~TreeModel();

  QVariant data(const QModelIndex &index, int role) const;
  Qt::ItemFlags flags(const QModelIndex &index) const;
  QVariant headerData(int section, Qt::Orientation orientation,
                         int role = Qt::DisplayRole) const;
  QModelIndex index(int row, int column,
                       const QModelIndex &parent = QModelIndex()) const;
  QModelIndex parent(const QModelIndex &index) const;
  int rowCount(const QModelIndex &parent = QModelIndex()) const;
  int columnCount(const QModelIndex &parent = QModelIndex()) const;

private:
  void setupModelData(TreeItem *parent);

  TreeItem *rootItem;
};

#endif
